home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.5 Applications 2004 May / SGI IRIX 6.5 Applications 2004 May.iso / dev / java2_dev.idb / usr / demos / java2 / JNI-big-test / arg-native.c.z / arg-native.c
C/C++ Source or Header  |  2004-02-24  |  5KB  |  141 lines

  1.  
  2. /* JNITest.h generated by applying javah
  3.    on the Java class, and contains the
  4.    function declaration for the native method
  5. */
  6. #include "JNITest.h"
  7.  
  8. /* used for printf */
  9. #include "stdio.h"
  10.  
  11. /* Signatures of several of these are in JNITest.h */
  12.  
  13. void Java_JNITest_arg0Test(JNIEnv *env, jobject obj) {
  14.   printf("arg0Test: Welcome to the brave new world of JNI -- Java Native Interface\n");
  15. }
  16.  
  17. void Java_JNITest_arg1Test__I(JNIEnv *env, jobject obj, jint arg1) {
  18.   printf("arg1Test: Testing passing of integers !\n");
  19.   printf("arg1Test: Arg1 = %d\n", arg1);
  20. }
  21.  
  22. void Java_JNITest_arg1Test__D(JNIEnv *env, jobject obj, jdouble arg1) {
  23.   printf("arg1Test: Testing passing of doubles !\n");
  24.   printf("arg1Test: Arg1 = %f\n", arg1);
  25. }
  26.  
  27. void Java_JNITest_arg1Test__J(JNIEnv *env, jobject obj, jlong arg1) {
  28.   printf("arg1Test: Testing passing of longs !\n");
  29.   printf("arg1Test: Arg1 = %lld\n", arg1);
  30. }
  31.  
  32. void Java_JNITest_arg1Test__C(JNIEnv *env, jobject obj, jchar arg1) {
  33.   printf("arg1Test: Testing passing of chars !\n");
  34.   printf("arg1Test: Arg1 = %c\n", arg1);
  35. }
  36.  
  37. void Java_JNITest_arg2Test__II(JNIEnv *env, jobject obj, jint arg1, jint arg2) {
  38.   printf("arg2Test: Testing passing of two integers !\n");
  39.   printf("arg2Test: Arg1 = %d   Arg2 = %d\n", arg1, arg2);
  40. }
  41.  
  42. void Java_JNITest_arg2Test__JJ(JNIEnv *env, jobject obj, jlong arg1, jlong arg2) {
  43.   printf("arg2Test: Testing passing of two longs !\n");
  44.   printf("arg2Test: Arg1 = %lld   Arg2 = %lld\n", arg1, arg2);
  45. }
  46.  
  47. void Java_JNITest_arg2Test__DD(JNIEnv *env, jobject obj, jdouble arg1, jdouble arg2) {
  48.   printf("arg2Test: Testing passing of two doubles !\n");
  49.   printf("arg2Test: Arg1 = %f   Arg2 = %f\n", arg1, arg2);
  50. }
  51.  
  52. void Java_JNITest_arg2Test__CC(JNIEnv *env , jobject obj, jchar arg1, jchar arg2) {
  53.   printf("arg2Test: Testing passing of two chars !\n");
  54.   printf("arg2Test: Arg1 = %c   Arg2 = %c\n", arg1, arg2);
  55. }
  56.  
  57. void Java_JNITest_arg6Test__IIIIII(JNIEnv *env , jobject obj, jint arg1, jint arg2, jint arg3, jint arg4, jint arg5, jint arg6 ) {
  58.   printf("arg6Test: Testing passing of six integers !\n");
  59.   printf("arg6Test: Arg1 = %d   Arg2 = %d, Arg 3 = %d\n", arg1, arg2, arg3);
  60.   printf("          Arg4 = %d   Arg5 = %d, Arg 6 = %d\n", arg4, arg5, arg6);
  61. }
  62.  
  63. void Java_JNITest_arg6Test__DDDDDD(JNIEnv *env , jobject obj, jdouble arg1, jdouble arg2, jdouble arg3, jdouble arg4, jdouble arg5, jdouble arg6 ) {
  64.   printf("arg6Test: Testing passing of six doubles !\n");
  65.   printf("arg6Test: Arg1 = %g   Arg2 = %g, Arg 3 = %g\n", arg1, arg2, arg3);
  66.   printf("          Arg4 = %g   Arg5 = %g, Arg 6 = %g\n", arg4, arg5, arg6);
  67. }
  68.  
  69. jint Java_JNITest_arg0TestI(JNIEnv *env, jobject obj) {
  70.  
  71.   printf("arg0Test: Testing returning of ints !\n");
  72.   return 31415;
  73. }
  74.  
  75. jdouble Java_JNITest_arg0TestD(JNIEnv *env, jobject obj) {
  76.  
  77.   printf("arg0Test: Testing returning of doubles !\n");
  78.   return 3.141592654;
  79. }
  80.  
  81. /* Used to access fields of Java. Testing access of misalinged fields 
  82.    as well
  83. */
  84. void Java_JNITest_nativeAccessTest(JNIEnv *env, jobject obj) {
  85.  
  86.    jfieldID fid1;
  87.    jfieldID fid2;
  88.    jfieldID fid3;
  89.    jfieldID fid4;
  90.    jfieldID fid5;
  91.    jclass cobj;
  92.  
  93.    printf("In nativeAccessTest (native) function \n");
  94.    cobj = (*env)->GetObjectClass(env, obj);
  95.  
  96.    fid1 = (*env)->GetFieldID(env, cobj, "field1", "C");
  97.    printf("myTest.field1 = %18c\n", (*env)->GetCharField(env, obj, fid1));
  98.  
  99.    fid2 = (*env)->GetFieldID(env, cobj, "field2", "I");
  100.    printf("myTest.field2 = %18d\n", (*env)->GetIntField(env, obj, fid2));
  101.  
  102.    fid3 = (*env)->GetFieldID(env, cobj, "field3", "J");
  103.    printf("myTest.field3 = %18lld\n", (*env)->GetLongField(env, obj, fid3));
  104.  
  105.    fid4 = (*env)->GetFieldID(env, cobj, "field4", "F");
  106.    printf("myTest.field4 = %18.9g\n", (*env)->GetFloatField(env, obj, fid4));
  107.  
  108.    fid5 = (*env)->GetFieldID(env, cobj, "field5", "D");
  109.    printf("myTest.field5 = %18.9g\n", (*env)->GetDoubleField(env, obj, fid5));
  110. }
  111.  
  112. /* Used to call methods of Java. 
  113. */
  114. void Java_JNITest_nativeInvokeTest(JNIEnv *env, jobject obj) {
  115.  
  116.    jmethodID mid1;
  117.    jmethodID mid2;
  118.    jmethodID mid3;
  119.    jmethodID mid4;
  120.    jmethodID mid5;
  121.    jclass cobj;
  122.  
  123.    printf("In nativeInvokeTest (native) function \n");
  124.    cobj = (*env)->GetObjectClass(env, obj);
  125.  
  126.    mid1 = (*env)->GetMethodID(env, cobj, "f1", "()C");
  127.    printf("myTest.f1() = %18c\n", (*env)->CallCharMethod(env, obj, mid1));
  128.  
  129.    mid2 = (*env)->GetMethodID(env, cobj, "f2", "()I");
  130.    printf("myTest.f2() = %18d\n", (*env)->CallIntMethod(env, obj, mid2));
  131.  
  132.    mid3 = (*env)->GetMethodID(env, cobj, "f3", "()J");
  133.    printf("myTest.f3() = %18lld\n", (*env)->CallLongMethod(env, obj, mid3));
  134.  
  135.    mid4 = (*env)->GetMethodID(env, cobj, "f4", "()F");
  136.    printf("myTest.f4() = %18.9g\n", (*env)->CallFloatMethod(env, obj, mid4));
  137.  
  138.    mid5 = (*env)->GetMethodID(env, cobj, "f5", "()D");
  139.    printf("myTest.f5() = %18.9g\n", (*env)->CallDoubleMethod(env, obj, mid5));
  140. }
  141.